home *** CD-ROM | disk | FTP | other *** search
/ Meeting Pearls 1 / Meeting Pearls Vol 1 (1994).iso / installed_progs / comm / ums / developer.lha / Developer / interfaces / c / examples / PrintGroups.c < prev    next >
Encoding:
C/C++ Source or Header  |  1993-08-01  |  2.4 KB  |  96 lines

  1. /*
  2.  * PrintGroups.c - Print all groups in a message base
  3.  *
  4.  * (c) 1992 Klaus Melchior, Stefan Becker
  5.  *
  6.  */
  7.  
  8. #include <clib/ums_protos.h>
  9. #include <pragmas/ums_pragmas.h>
  10. #include <stdio.h>
  11. #include <stdlib.h>
  12. #include <string.h>
  13.  
  14. extern struct Library *UMSBase;
  15.  
  16. int main(int argc, char *argv[])
  17. {
  18.  UMSUserAccount *account;
  19.  
  20.  /* Check arguments */
  21.  if (argc<3) {
  22.   fprintf(stderr,"Usage: %s <user> <passwd>\n",argv[0]);
  23.   exit(20);
  24.  }
  25.  
  26.  /* Login */
  27.  if (account=UMSLogin(argv[1],argv[2])) {
  28.   char *group; /* Pointer to group name */
  29.  
  30.   /* First group: all private messages */
  31.   if (group=strdup("")) {
  32.    UMSMsgNum num=0;
  33.  
  34.    /* Print header */
  35.    printf("Group list:\n");
  36.  
  37.    /* Set local bit 0 in all messages with NO ViewAccess */
  38.    UMSSelectTags(account,UMSTAG_SelWriteLocal, TRUE,
  39.                          UMSTAG_SelSet,        1,
  40.                          UMSTAG_SelQuick,      TRUE,
  41.                          UMSTAG_SelMask,       UMSUSTATF_ViewAccess,
  42.                          UMSTAG_SelMatch,      0,
  43.                          TAG_DONE);
  44.  
  45.    /* For all groups */
  46.    for (;;) {
  47.     /* Set local bit 0 on all messages in message group */
  48.     UMSSelectTags(account,UMSTAG_SelWriteLocal, TRUE,
  49.                           UMSTAG_SelSet,        1,
  50.                           UMSTAG_SelQuick,      TRUE,
  51.                           UMSTAG_WGroup,        group,
  52.                           TAG_DONE);
  53.  
  54.     /* Free string */
  55.     free(group);
  56.  
  57.     /* Search a message which has local bit 0 NOT set */
  58.     if ((num=UMSSearchTags(account,UMSTAG_SearchLocal, TRUE,
  59.                                    UMSTAG_SearchMask,  1,
  60.                                    UMSTAG_SearchMatch, 0,
  61.                                    UMSTAG_SearchQuick, TRUE,
  62.                                    TAG_DONE)) == 0)
  63.      /* No message found --> leave loop */
  64.      break;
  65.  
  66.     /* Get group name */
  67.     if (!ReadUMSMsgTags(account,UMSTAG_RMsgNum, num,
  68.                                 UMSTAG_RGroup,  &group,
  69.                                 TAG_DONE)) {
  70.      /* Print error message and quit */
  71.      fprintf(stderr,"Error in ReadUMSMsgTags()!\n");
  72.      break;
  73.     }
  74.  
  75.     /* Copy group name */
  76.     if (!(group=strdup(group))) {
  77.      fprintf(stderr,"Couldn't copy group name !\n");
  78.      break;
  79.     }
  80.  
  81.     /* Print group name */
  82.     printf("Group: %s\n",group);
  83.  
  84.     /* Free UMS message */
  85.     FreeUMSMsg(account,num);
  86.    }
  87.   }
  88.  
  89.   /* Logout */
  90.   UMSLogout(account);
  91.  } else
  92.   fprintf(stderr,"Couldn't login as '%s'!\n",argv[1]);
  93.  
  94.  exit(0);
  95. }
  96.